/*
 * Author: vdaras
 */


#ifndef GUI_SCREEN_H
#define	GUI_SCREEN_H

#include "../NonCopyable.h"
#include "../sdl/Canvas.h"
#include "Container.h"

namespace gui
{
    
class FocusServer;

class Screen : public Container
{
private:
    sdl::Canvas *m_gameScreen;
    
    FocusServer *m_focusServer;
    
public:

    /**
     * Default constructor initializes the actual screen pointer.
     *
     * @param screen: the game's screen
     */

    Screen(sdl::Canvas *screen);

    
    ~Screen();

    
    /**
     * Screen container should not be resized by any mean.
     *
     * @param width:
     * @param height:
     */

    void Resize(int width, int height);
    

    /**
     * Draws the gui's contents on the game's screen.
     */

    void Draw() const;
    
        
    /**
     * Forwards the produced mouse event to the focus server.
     *
     * @param event: a mouse event occurred.
     */
    
    virtual void OnMouseEvent(MouseEvent &event);
};

};

#endif	/* SCREEN_H */

